1. Field of the Invention
The present invention generally relates to mass storage systems and, more particularly, to mass storage systems that store redundant data.
2. Description of the Related Art
Data storage systems are used within computer networks and systems to store large amounts of data that is used by multiple servers and client computers. Generally, one or more servers are connected to the storage system to supply data to and from a computer network. The data is transferred through the network to various users or clients. The data storage system generally comprises a controller that interacts with one or more storage devices such as one or more Winchester disk drives or other forms of data storage. To facilitate uninterrupted operation of the server as it reads and writes data from and to the storage system, as well as executes application programs for use by users, the storage system comprises a write cache that allows data from the server to be temporarily stored in the write cache prior to being written to a storage device. As such, the server can send data to the storage system and quickly be provided an acknowledgement that the storage system has stored the data. The acknowledgement is sent even though the storage system has only stored the data in the write cache and is waiting for an appropriate, convenient time to store the data in a storage device. As is well known in the art, storing data to a write cache is much faster than storing data directly to a disk drive. Consequently, the write cache buffers a large amount of data in anticipation of subsequent storing of that data in a storage device.
To ensure that a malfunction of the storage device does not render all the data on the device useless, the data is generally backed up on a periodic basis. Generally, the operating system in the server will periodically request a backup be performed. Upon a request from the operating system or directly from the user being received by the mass storage system, the storage system mirrors one storage device or volume to another storage device or volume, i.e., copying all the data currently stored in a first storage device to a second storage device. The data in the second storage device can be written to a backup media such as a tape drive at the point of mirror coherency synchronization in the storage system (either at the beginning of a mirror operation in a snapshot storage system or at a point when the mirror is broken on other storage system models.) Mirror coherency synchronization is a term that may be defined as the proper flushing of the operating system at a point in time to ensure that the mirror (or snapshot) of the first storage device is accurate and usable from the operating systems' point of view. This can be achieved via commands from the OS to all applications to flush (synchronize) their data storage information, then having the OS do the same, and then pausing momentarily while the OS tells the storage system to break the mirror or perform the snapshot. At this point, it is the storage systems' responsibility to ensure an accurate copy is created on the second storage device (the mirror storage device). This means that the data that is in the write cache at the time of the request for the mirroring process must be written to the storage devices prior to completion of the break mirror or snapshot operation. The process for writing the data contained in the write cache to the storage devices is referred to as “flushing” the write cache. An operating system that is performing such a mirror operation will generally set an amount of time in which the write cache can be flushed as well as an amount of time for the break mirror or snapshot process to be accomplished, since all OS level activity and applications will generally be suspended for this amount of time. For some operating systems, this period of time may be less than 10 seconds for performing both operations.
In large mass storage systems that have large write caches and two or more virtual volumes of storage devices comprising arrays of physical storage devices such as Winchester disk drives, the amount of time allocated by the operating system for flushing and mirroring may not always be sufficient to perform the entire task. As such, the application programs executing on the server that requested the mirror coherency synchronization operation will be halted until the mirroring process is complete, causing some applications and potentially some operating systems to crash as a result.
Therefore, there is a need in the art for a method and apparatus that reduces the amount of time required to perform this mirror coherency synchronization task within mass storage systems that utilize write cache.